জাভাস্ক্রিপ্ট অ্যাসিনক্রোনাস (JS Asynchronous)

Web Development - জাভাস্ক্রিপ্ট (JavaScript) জাভাস্ক্রিপ্ট অ্যাসিঙ্ক (JS Async) |
286
286

জাভাস্ক্রিপ্ট একটি একক থ্রেডেড ভাষা, যা সাধারণত সিঙ্ক্রোনাসভাবে কাজ করে, অর্থাৎ একে একে সব অপারেশন সম্পন্ন হয়। তবে, কিছু অপারেশন যেমন নেটওয়ার্ক রিকুয়েস্ট, ফাইল সিস্টেম এক্সেস, অথবা টাইমার অপারেশন সিঙ্ক্রোনাসভাবে সম্পন্ন হতে সময় নিতে পারে। এই সময়ের মধ্যে, ইউজার ইন্টারফেস বা অন্যান্য প্রক্রিয়া সঠিকভাবে কাজ না করার জন্য অ্যাসিঙ্ক্রোনাস কোড ব্যবহৃত হয়। অ্যাসিঙ্ক্রোনাস কোড ইউজার ইন্টারফেসকে স্থির না রেখে অন্য কাজ করতে সক্ষম।


অ্যাসিনক্রোনাস প্রোগ্রামিং কি?

অ্যাসিনক্রোনাস প্রোগ্রামিং এমন একটি প্রোগ্রামিং কৌশল যেখানে কোডের কিছু অংশ নির্দিষ্ট সময় নিতে পারে, তবে অন্যান্য কাজ চলতে থাকে। জাভাস্ক্রিপ্টের অ্যাসিঙ্ক্রোনাস প্রোগ্রামিং ব্যবহার করা হয় যখন কিছু কার্য সম্পাদন করতে সময় লাগে এবং আমরা চাইনা যে সেগুলি সব একে একে প্রক্রিয়া হোক।

অ্যাসিনক্রোনাস কোড লেখার জন্য বিভিন্ন পদ্ধতি ব্যবহার করা হয়, যেমন কলব্যাক (callback), প্রমিস (promise), এবং অ্যাসিঙ্ক/অওয়েইট (async/await)।


অ্যাসিনক্রোনাস কোডের উদাহরণ

ধরা যাক, আপনি একটি ডেটাবেস থেকে ডেটা ফেচ করতে চান, কিন্তু ডেটা ফেচ হওয়ার সময় অন্য কোনো কোড থামবে না। অ্যাসিনক্রোনাস কোডের মাধ্যমে আপনি এই কাজটি করতে পারেন।

উদাহরণ ১: setTimeout() - অ্যাসিনক্রোনাস টাইমার

console.log("শুরু");

setTimeout(() => {
    console.log("টাইমআউট পরবর্তী কাজ");
}, 2000);  // ২ সেকেন্ড পর 실행 হবে

console.log("শেষ");

এই কোডে, setTimeout() একটি টাইমআউট ফাংশন যেটি ২ সেকেন্ড পর 실행 হবে, কিন্তু এটির জন্য অন্য কোনো কোড থামবে না। আউটপুট হবে:

শুরু
শেষ
টাইমআউট পরবর্তী কাজ

এখানে দেখা যাচ্ছে যে, টাইমআউটের পরবর্তী কাজ ২ সেকেন্ড পর সম্পন্ন হলেও অন্য কাজগুলি চলতে থাকে।


অ্যাসিঙ্ক্রোনাস প্রোগ্রামিংয়ের পদ্ধতিসমূহ

কলব্যাক (Callback)

একটি ফাংশনকে অন্য ফাংশনের আর্গুমেন্ট হিসেবে পাস করা কলব্যাক হিসেবে পরিচিত। এটি অ্যাসিঙ্ক্রোনাস কাজ সম্পন্ন হলে কল করা হয়। তবে, কলব্যাক হেল (Callback Hell) নামক একটি সমস্যা হতে পারে, যেখানে কলব্যাকগুলি নেস্টেড থাকে, যা কোডের পাঠযোগ্যতা কমিয়ে দেয়।

function fetchData(callback) {
    setTimeout(() => {
        const data = "ডেটা ফেচ হয়েছে";
        callback(data);
    }, 2000);
}

fetchData(function(data) {
    console.log(data);  // আউটপুট: ডেটা ফেচ হয়েছে
});

প্রমিস (Promise)

প্রমিস হল একটি বিশেষ অবজেক্ট, যা ভবিষ্যতে কোনো সফল অপারেশন বা ত্রুটির জন্য অপেক্ষা করে। এটি কলব্যাকের বিকল্প এবং কোডের পাঠযোগ্যতা উন্নত করতে সাহায্য করে। একটি প্রমিসে তিনটি স্টেট থাকে: Pending (অপেক্ষমাণ), Resolved (সম্পন্ন), এবং Rejected (অব্যাহত)

প্রমিসের ব্যবহার:

let dataFetched = new Promise(function(resolve, reject) {
    setTimeout(() => {
        let success = true;
        if(success) {
            resolve("ডেটা সফলভাবে ফেচ হয়েছে");
        } else {
            reject("ডেটা ফেচ করতে সমস্যা হয়েছে");
        }
    }, 2000);
});

dataFetched
    .then(function(result) {
        console.log(result);  // আউটপুট: ডেটা সফলভাবে ফেচ হয়েছে
    })
    .catch(function(error) {
        console.log(error);  // আউটপুট: ডেটা ফেচ করতে সমস্যা হয়েছে
    });

এই কোডে, প্রমিস প্রথমে Pending অবস্থায় থাকে এবং ২ সেকেন্ড পর এটি Resolved বা Rejected হতে পারে, যা তারপর .then() বা .catch() দিয়ে হ্যান্ডেল করা হয়।

অ্যাসিঙ্ক/অওয়েইট (Async/Await)

async এবং await কিওয়ার্ডগুলি ES7 (ECMAScript 2017) এ চালু হয়েছিল এবং এটি প্রমিস ব্যবহার করার একটি আরও সহজ এবং সিম্পল পদ্ধতি প্রদান করে। async ফাংশনটি একটি প্রমিস রিটার্ন করে এবং await কিওয়ার্ডটি প্রমিসের ফলাফল পাওয়া না যাওয়া পর্যন্ত কোডটির পরবর্তী অংশ ব্লক করে।

অ্যাসিঙ্ক/অওয়েইটের ব্যবহার:

function fetchData() {
    return new Promise(resolve => {
        setTimeout(() => {
            resolve("ডেটা ফেচ হয়েছে");
        }, 2000);
    });
}

async function getData() {
    let result = await fetchData();
    console.log(result);  // আউটপুট: ডেটা ফেচ হয়েছে
}

getData();

এখানে, fetchData() ফাংশনটি একটি প্রমিস রিটার্ন করে এবং await দ্বারা আমরা সেই প্রমিসের ফলাফল পর্যন্ত অপেক্ষা করি। getData() একটি async ফাংশন যা প্রমিস রিটার্ন করবে এবং await এর মাধ্যমে ডেটা পাওয়ার পর পরবর্তী কোডটি এক্সিকিউট হবে।


অ্যাসিঙ্ক্রোনাস কোডের সুবিধা

১. ইউজার ইন্টারফেস হালনাগাদ

অ্যাসিঙ্ক্রোনাস কোড ব্যবহার করলে ইউজার ইন্টারফেস স্থির থাকে, যেমন পেজ রিফ্রেশ না করেই ডেটা ফেচ করা বা ইউজার অ্যাকশনের ভিত্তিতে কিছু পরিবর্তন করা। এতে ইউজারের অভিজ্ঞতা ভালো থাকে।

২. কার্যক্ষমতা উন্নতি

অ্যাসিঙ্ক্রোনাস প্রোগ্রামিং অ্যাপ্লিকেশনটির কার্যক্ষমতা উন্নত করে, কারণ এটি একে একে সব কাজ করতে বাধ্য না হয়ে একাধিক কাজ একযোগে চালিয়ে যেতে পারে।

৩. রিসোর্সের দক্ষ ব্যবহার

অ্যাসিঙ্ক্রোনাস কোড কম্পিউটার রিসোর্সের যথাযথ ব্যবহার নিশ্চিত করে। উদাহরণস্বরূপ, ডেটা ফেচ করার সময় UI থামবে না এবং অন্য কাজ করা যেতে পারে।


সারাংশ

জাভাস্ক্রিপ্টে অ্যাসিঙ্ক্রোনাস প্রোগ্রামিং এমন একটি পদ্ধতি যা সময়সাপেক্ষ কাজগুলো (যেমন ডেটাবেস রিকুয়েস্ট, ফাইল অপারেশন) চলাকালীন অন্যান্য কাজ করতে দেয়। এটি কলব্যাক, প্রমিস, এবং অ্যাসিঙ্ক/অওয়েইটের মাধ্যমে বাস্তবায়িত হয়। অ্যাসিঙ্ক্রোনাস কোড ইউজার ইন্টারফেসকে স্থির না রেখে কার্যক্ষমতা উন্নত করে এবং রিসোর্সের দক্ষ ব্যবহার নিশ্চিত করে। async এবং await এর মাধ্যমে কোড লেখার সময় পাঠযোগ্যতা বাড়ানো যায় এবং এটি একটি শক্তিশালী উপায় অ্যাসিঙ্ক্রোনাস কোড পরিচালনার জন্য।

common.content_added_by
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion